In a typical video or computer game, one or more human players interact with a game system to control animated characters or objects in a virtual world. For example, a human player can command a hero character to run from several villain characters. The game system controls each of the villain players, but also controls aspects of the hero character, such as precise movements of the hero character's animated legs as it moves.
When the game system is controlling a character, it determines the character's actions and animates the character performing those actions. Game systems in various implementations use scripted animation, procedural animation, or a combination of these. With scripted animation, a character's movements are predefined, and the motion of the character will be the same each time the script is used. Scripted animations include walking animations, or a character swinging a sword, for example. Key frame animation is an example of scripted animation. With procedural animation, conditions and constraints relating to the character are defined, and the system determines the motion of the character based on these and a set of rules, e.g., the laws of physics. The final animation produced by procedural animation is not predetermined—varying the initial conditions and constraints produces different animations. Inverse kinematic animation is an example of procedural animation.
A motion synthesis system generates motion data that describes the motion of a character or object using procedural animation techniques. One example of a motion synthesis system is the Euphoria system available from NaturalMotion Ltd. Of Oxford, United Kingdom. Motion synthesis systems go beyond traditional procedural animation systems that are usually based on the laws of physics, and instead simulates active, intelligent human behavior such as running or jumping by simulating muscle contractions and typical human movement patterns. However, such systems can be difficult to use due to their proprietary application programming interfaces (APIs).